モジュール詳細:反転紅色暗号

この混乱は俺の墓石に刻まれるだろう……。

モジュールは、3つのディスプレー、キーボード、2つの矢印、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の矢印を押すと、次のページに移動できる。左の矢印を押すと前のページに移動できる。ページは全部で3ページある。

ステップ1:カエサルシャッフル暗号

このステップでは、上のディスプレーに表示された暗号化された単語と、3ページ目の2つの5文字のキーワードが必要になる。2つのキーワードを逆順にする。

両方のキーワードの各英字について、以下のステップを実行する。

  • 暗号化された単語のX番目の文字の後ろに目印を置く。Xは、5から現在の位置にある一つ目のキーのアルファベット上の位置の数字を引き、それを5で割った余りに等しい。目印の左右にある2つの文字列を入れ替える。
  • 右側にある部分文字列を、現在の位置にある二つ目のキーのアルファベット上の位置の値だけ後方にカエサルシフト(B -> A)する。目印を削除する。

暗号化された単語: NBDXQG
キーワード1: ULCER → RECLU
キーワード2: KNOBS → SBONK

NB.DXQG → DXQG.NB → DXQG.UI → DXQGUI

DXQGU.I → I.DXQGU → I.BVOES → IBVOES

IB.VOES → VOES.IB → VOES.TM → VOESTM

VOE.STM → STM.VOE → STM.HAQ → STMHAQ

STMH.AQ → AQ.STMH → AQ.HIBW → AQHIBW

新たな暗号化された単語: AQHIBW

ステップ2:二重三要素リフレクター暗号

このステップでは、2ページ目の3つのキーワードと、暗号化された最初の単語が必要になる。最初2つのキーワードは、2つの三要素リフレクターを作成するために使用され、3つ目のキーワードは、各暗号化ステップ完了後にリフレクターをシャッフルするために使用される。

三要素リフレクターを作るには、キーワードとアルファベットを順に連結して文字列を作り、重複する英字を先頭を除いてすべて取り除き、その文字列を中央に穴のあいた3×9の格子に読み順で並べる。一番目のキーワードから作られた三要素リフレクターは上段のリフレクターであり、二番目のキーワードから作られたものは下段のリフレクターである。

暗号化された単語の各英字に対して、下段のリフレクターからその英字を見つけ、次に上段のリフレクターから同じ位置にある英字を見つける。この英字は一つ目の中間文字である。下段のリフレクターからその文字を見つけ、次に上段のリフレクターから同じ位置にある文字を見つける。この英字は二つ目の中間英字である。その後、上段のリフレクターと同じ位置にある英字を探し、復号された単語の英字を見つける。

各リフレクター内で、中間文字を見つけた列と段を記録する。一つ目の中間文字は下段のリフレクターから、二つ目の中間文字は上段のリフレクターで見つかったことを念頭に置くこと。次の英字を復号する前に、両方のリフレクターを次のように再配置する。

  • 現在の位置にある3つ目のキーワードの英字に対し、アルファベット上の位置の数字を三進数で取得する。
  • これが奇数回目の処理の場合、取得した値の上位2桁を三進数で取得し、二つ目の中間文字が見つかった段をその数だけ左にずらし、一つ目の中間文字が見つかった列を最下位桁と同じ数だけ下にずらす。
  • これが偶数回目の処理の場合、二つ目の中間文字が見つかった列を、取得した値の最上位桁と同じ数だけ下にずらし、下位2桁を三進数で取得し、一つ目の中間文字が見つかった段をその数だけ左にずらす。
  • リフレクターを動かす際に、穴は移動させないこと。

暗号化された単語:AQHIBW
キーワード1:ALGEBLA キーワード2:RESIGN
>キーワード3: LOCUS

ALGEBCDFH
IJKM NOPQ
RSTUVWXYZ
---------
RESIGNDAB
CFHJ KLMO
PQTUVWXYZ

A → F → J → M
L → 12 → 110 左に11(三進数)回、下に0回

ALGEBCDFH
IJKM NOPQ
RSTUVWXYZ
---------
RESIGNDAB
KLMO CFHJ
PQTUVWXYZ

Q → S → G → B
O → 15 → 120 左に12(三進数)回、下に0回

ALGEBCDFH
IJKM NOPQ
XYZRSTUVW
---------
RESIVNDAB
KLMO CFHJ
PQTUGWXYZ

H → P → X → U
C → 3 → 010 左に01(三進数)回、下に0回

ALGEBCDFH
IJKM NOPQ
XYZRSTUVW
---------
RESIVNDAB
KLMO CFHJ
QTUGWXYZP

I → E → L → J
U → 21 → 210 左に21(三進数)回、下に0回

EBCDFHALG
IJKM NOPQ
XYZRSTUVW
---------
RLSIVNDAB
KTMO CFHJ
QEUGWXYZP

B → G → R → E
S → 19 → 201 左に20(三進数)回、下に1回

EBCDFHALW
IJKM NOPG
XYZRSTUVQ
---------
DABRLSIVN
KTMO CFHJ
QEUGWXYZP

W → S → H → P

ステップ3:転置半ポリュビオス暗号

このステップでは、暗号化された単語と、1ページ目の2つのキー(それぞれ分離キーと転置キーと呼ぶ)を使用する。

始めに、分離キーを取得し、最初に出現したものを除いた重複する英字を削除しつつ、半ポリュビオス暗号表の左半分に読み順で入力する。残りのアルファベットを一文字ずつ加え、足りなくなったら右半分に移動する。半ポリュビオス暗号表は、下図のような配置である。

1234512345
1
2
3####
LR

暗号化された単語の各英字を三つの座標に変換し、左右、段、列の順番に上から下に記録し、直前の英字の右隣に並べる。

その後、転置キーを逆順にし、各英字ごとに、それを半ポリュビオス暗号表から探し、先程作成した6×3座標行列に対して以下の処理を行う。

  • これが奇数回目の処理の場合、その英字がある段と同じ行列内の行を、列座標の数字だけ右にずらす。
  • この際、2段目にある3と3段目にある4と5は動かしてはいけない。動かせる数字のみに注目して処理すること。

最終的な行列の各列を読み取り、半ポリュビオス暗号表からその英字を探し、復号された単語を取得する。

暗号化された単語:MBUJEP
分離キー:MAXIM
転置キー:STYLE

1234512345
1MAXIBLNOPQ
2CDEFGRSTUV
3HJK##WYZ##
LR
処理前1回目:S2回目:T3回目:Y4回目:L5回目:E
LLRLLR
112321
154234
LLRLLR
221311
154234
LLRLLR
221311
514234
LLRLLR
221311
524314
LLLLRR
221311
521344
LLLLRR
112321
521344

復号された単語:BACKUP

復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの矢印をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。